package com.eat.fish_service.netty_client;

import lombok.Data;

import java.io.Serializable;

/**
 * @author CZF
 * @create 2022-04-05 20:06
 *
 * netty客户端与鱼缸服务端通信协议数据包
 *
 * 本项目先使用固定长度数据包通信
 *
 *
 */
@Data
public class Message implements Serializable {
    //魔数，默认为6666,
    private byte[] head = new byte[4];

    //数据长度，固定为60个字节，一般len的值为60，除非以后要增加长度
    private byte[] len = new byte[1];

    //操作类型，用于客户端操作服务端
    //0:表示操作传感器  1:表示获取数据
    private byte[] update = new byte[1];

    /**
     * 控制器件开关数据，占用15个字节
     */
    //蜂鸣器（用来蜂鸣报警，提示鱼缸出问题）
    //值表示：
    // 0：不做处理（默认）  1：关闭信号  2：开启信号  9：故障
    private byte[] fengMingQi = new byte[1];

    //排水阀
    // 0：不做处理（默认）  1：关闭信号  2：开启信号  9：故障
    private byte[] outlet = new byte[1];

    //进水阀
    // 0：不做处理（默认）  1：关闭信号  2：开启信号  9：故障
    private byte[] inlet = new byte[1];

    //灯光
    /**
     * 0：不做处理（默认）
     * 9：故障
     * 1：关白灯 2：开白灯
     * 3：关蓝灯 4：开蓝灯
     * 5：开橙灯 6：关橙灯
     */
    private byte[] light = new byte[1];

    //打氧设备
    // 0：不做处理（默认）  1：关闭信号  2：开启信号  9：故障
    private byte[] oxygen = new byte[1];

    //投喂
    // 0：不做处理（默认）
    // 1：投喂2-3粒   2：投喂4-6粒  3：投喂6-9粒  9：故障
    private byte[] feed = new byte[1];

    //紫外灯
    // 0：不做处理（默认）  1：关闭信号  2：开启信号  9：故障
    private byte[] uv_lamp = new byte[1];

    //留8个字节用于备用，以后增加器件使用，加上上面一共15个字节
    private byte[] spare1 = new byte[8];

    /**
     * 传感器数据，占30个字节
     */

    //ph值，传输的值为原值的100倍的整数，读准确值要乘0.01
    private byte[] value1 = new byte[4];

    //温度
    private byte[] value2 = new byte[4];

    //电导率，传输的值为原值的100倍的整数，读准确值要乘0.01
    private byte[] value3 = new byte[4];

    //浑浊度，传输的值为原值的100倍的整数，读准确值要乘0.01
    private byte[] value4 = new byte[4];

    //溶解氧，数据表示如上
    private byte[] value5 = new byte[4];

    //留10个字节备用，增加传感器使用，加上上面一共占30个字节
    private byte[] spare2 = new byte[10];




    /**
     * 剩下备用空间，占用9个字节，如果需要扩充功能用
     */
    private byte[] spare3 = new byte[9];

    
}
